//
// Created by zhouyi on 2019/9/18.
//

#include <stdio.h>
#include <string.h>

size_t STRLEN(const char *string);

int main() {
    // 是20长度的字符串，中文是10，最后一位是结束符0
//    char stringName[21];
//    // 字符串初始化的标准方法，所有的数据置为0
//    memset(stringName, 0, sizeof(stringName));
//    //字符串赋值
//    strcpy(stringName, "1234567890qweertyuio");
//    printf("%s \n", stringName);
//    // 字符串截取
//    printf("stringName + 1 %s\n", stringName + 1);
//    printf("stringName + 2 %s\n", stringName + 2);
//
//
//    printf("==============================================\n");
//
//    // 字符串是0为结束
//    printf("stringName  %s\n", stringName);
//    //强制置为0
//    stringName[5] = 0;
//    printf("stringName  %s\n", stringName);
//    // 虽然在第5结束，但是后面还是有值，变成了内存中的垃圾值了，所以这个是有隐患的
//    // 用for输出
//    for (int i = 0; i < sizeof(stringName); ++i) {
//        printf("%c", stringName[i]
//    }
//
//    printf("==============================================\n");
//    printf("输出10个字符宽度，右对齐  =%10s=\n", "abcd");
//    printf("输出10个字符宽度，左对齐  =%-10s=\n", "abcd");
//
//    printf("============================22==================\n");
//

    // 数组的越界 是非法操作，但是不一定出问题，因为内存没有冲突


    char stringName2[2][21];
    memset(stringName2, 0, sizeof(stringName2));
    strcpy(stringName2[0], "1234567890");
    strcpy(stringName2[1], "我是来试试数12");


    printf("stringName2[0] =%s=\n", stringName2[0]);
    printf("stringName2[1] =%s=\n", stringName2[1]);

    printf("stringName2[1] =%s=\n", strcpy(stringName2[1], "我是来试试数12"));

    printf("stringName2[1][22] =%c=\n", stringName2[0][20]);

    printf("stringName2[0] 数组size %lu \n", sizeof(stringName2[0]));
    printf("stringName2[0] 字符串length %lu \n ", strlen(stringName2[0]));

    strncpy(stringName2[1], "我是来试试数12112", 3);
    printf("stringName2[1] =%s=\n", stringName2[1]);

    printf("stringName2[0] 数组size %zu \n", STRLEN(stringName2[0]));


    char dest[10] = "123456789";
    char src[10] = { 'h', '\0', 'e', 'l', 'l', 'o', '\0' };
    strncpy(dest, src, 4);


    printf("==%s== \n", dest);
    return 0;
}

size_t STRLEN(const char *str) {
    int length = 0;
    while (str[length] != 0)
        length++;

    return length;
}


